#pragma once

namespace Commands
{
    namespace Core
    {
        /** \brief */
        class Mutex
        {
            public:
                /** \brief */
                virtual ~Mutex(){}
                /** \brief */
                virtual void Acquire(void) const = 0;
                /** \brief */
                virtual void Release(void) const = 0;
        };
        //---------------------------------------------------------------------
        /** \brief */
        class Single_ThreadingPolicy : public Mutex
        {
            public:
                Single_ThreadingPolicy() {}
                virtual ~Single_ThreadingPolicy() {}
                virtual void Acquire(void) const {}
                virtual void Release(void) const {}
        };
        //---------------------------------------------------------------------
    }
}
